// //创建路由对象
// import { createRouter, createWebHistory } from 'vue-router'
// import menRoutes  from './Ym'

// import Login from '../page/Login.vue'
// import Index from '../page/Index.vue'
// import Gg  from '../page/Gg.vue'




// import {useCounterStore} from '../stores/user'



// const router = createRouter({
//     //创建路由模式
//     history:createWebHistory(),
//     //创建路由规则
//     routes: [
//         {
//             path: '/login',
//             name: 'login',
//             component: Login
//         }, {
//             path: '/index',
//             name: 'index',
//             component: Index,
//             children: [
//                  {name:'Gg',path:'gg',component:Gg,meta:{roleName:'',menuTitle:'test页面',menuIcon:'11'}}
//             ],
//             meta: {//配置路由的一些额外的信息
//                 isLogin: true
//             },
//             // 关键：重定向到子路由
//       redirect: to => {
//         // 直接重定向到子路由的相对路径
//         return { name: 'Gg' };
//         // 或用 path 方式：return 'gg';
//       }
//         },  
//       // 添加重定向规则（关键）
//     {
//       path: '/', // 根路径
//       redirect: '/login' // 初始访问时自动跳转到登录页
//     }
//     ]
// })
// //动态添加路由
// // router.addRoute({
// //     name:'test',
// //      path:'/test',
// //      component:Test
// // })
// // 给indx路由添加test路由
// // router.addRoute('index', {
// //     name: 'test',
// //     path: 'test',
// //     component: Test
// // })
// // router.addRoute,可以动态的给系统添加路由或者是子路由
// //路由守卫 3 1全局守卫  2路由独享守卫 3 组件内守卫
// //名称，执行顺序






// router.beforeEach((to, from, next) => {
//     let UserData= useCounterStore()
//     let data=UserData.userdata;
//     console.log( data,'1');
//     // 限定 未登录不能访问
//     // if (to.meta.isLogin && !localStorage.getItem('userLogin')) {
//      if (to.meta.isLogin && !data) {
//         next('login')
//         return
//     } 
//     else {
//        // 不是登录路由，只是首页
//        if(to.path=='/index'){
//           // 登录成功了，获取到了用户的身份和权限信息
//         // const userdata=JSON.parse(localStorage.getItem('userLogin') as string)
//         // 数据。 路由和角色关联起来数据
//         console.log( data);
//         const userrole=data.rolename 
//         console.log(userrole);
//         const routers=menRoutes.filter(t=>userrole.includes(t.meta.roleName))
//         console.log(routers);
//        routers.forEach(t=>{
//         router.addRoute('index',t)
//        })
//        }
//         next() //放行
//     }
// })



//export default router

/**  
 * RBAC 基于角色的身份认证
 * 用户表：user 
 * id username password
 * // 页面级别的身份认证
 */


// router.js - 路由配置
import { createRouter, createWebHistory } from 'vue-router'
import menRoutes from './Ym'

import Login from '../page/Login.vue'
import Index from '../page/Index.vue'
import Gg from '../page/Gg.vue'
import Kc from '../page/Kc.vue'

import { useCounterStore } from '../stores/user'

const router = createRouter({
    history: createWebHistory(),
    routes: [
        {
            path: '/login',
            name: 'login',
            component: Login
        },
        {
            path: '/index',
            name: 'index',
            component: Index,
            children: [
                {name:'Gg',path:'gg',component:Gg,meta:{roleName:'',menuTitle:'test页面',menuIcon:'11'}},
                {name:'Kc',path:'kc',component:Kc,meta:{roleName:'',menuTitle:'test页面',menuIcon:'11'}}
            ],
            meta: {
                isLogin: true
            },
            redirect: to => {
                return { name: 'Gg' };
            }
        },
        {
            path: '/',
            redirect: '/login'
        }
    ]
})

// 存储已添加的动态路由名称，避免重复添加
let dynamicRoutesAdded = false;

router.beforeEach((to, from, next) => {
    const UserData = useCounterStore()
    const data = UserData.userdata;
    
    // 未登录且需要登录验证的路由，重定向到登录页
    if (to.meta.isLogin && !data) {
        next('login')
        return
    } 
    
    // 确保动态路由只添加一次
    if (!dynamicRoutesAdded && data) {
        const userrole = data.rolename;
        const routers = menRoutes.filter(t => userrole.includes(t.meta.roleName));
        
        routers.forEach(t => {
            router.addRoute('index', t);
        });
        
        dynamicRoutesAdded = true;
        
        // 如果是首次添加动态路由，并且访问的是index的子路由，需要重新导航
        if (to.path.startsWith('/index') && !router.hasRoute(to.name)) {
            next({ ...to, replace: true });
            return;
        }
    }
    
    next();
})

export default router;







